home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / Visual Cafe Pro v1.0 / VISCAFE.BIN / BorderPanel.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-06-19  |  7.9 KB  |  441 lines

  1. package symantec.itools.awt;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Dimension;
  6. import java.awt.Font;
  7. import java.awt.FontMetrics;
  8. import java.awt.Graphics;
  9. import java.awt.Insets;
  10. import java.awt.LayoutManager;
  11. import java.awt.Panel;
  12.  
  13. public class BorderPanel extends Panel implements AlignStyle, BevelStyle {
  14.    protected static final int labelpadx = 10;
  15.    protected static final int labelipadx = 4;
  16.    protected Color borderColor;
  17.    protected Color labelColor;
  18.    protected int padtop;
  19.    protected int padbottom;
  20.    protected int padleft;
  21.    protected int padright;
  22.    protected int ixPad;
  23.    protected int iyPadTop;
  24.    protected int iyPadBottom;
  25.    protected int style;
  26.    protected String label;
  27.    protected int labelAlignment;
  28.    protected Insets internalInsets;
  29.    protected Panel panel;
  30.    Dimension oldSize;
  31.  
  32.    public BorderPanel() {
  33.       this((String)null, 1, 2);
  34.    }
  35.  
  36.    public BorderPanel(int var1) {
  37.       this((String)null, 1, var1);
  38.    }
  39.  
  40.    public BorderPanel(String var1) {
  41.       this(var1, 1, 2);
  42.    }
  43.  
  44.    public BorderPanel(String var1, int var2) {
  45.       this(var1, var2, 2);
  46.    }
  47.  
  48.    public BorderPanel(String var1, int var2, int var3) {
  49.       this.oldSize = new Dimension();
  50.       this.borderColor = Color.black;
  51.       this.labelColor = Color.black;
  52.       this.padleft = 6;
  53.       this.padright = 6;
  54.       this.padtop = 10;
  55.       this.padbottom = 6;
  56.       this.ixPad = 4;
  57.       this.iyPadTop = 2;
  58.       this.iyPadBottom = 7;
  59.       this.label = var1 != null && var1.length() == 0 ? null : var1;
  60.       this.labelAlignment = var2;
  61.       this.internalInsets = new Insets(10, 10, 10, 10);
  62.       this.style = var3;
  63.       this.setLayout((LayoutManager)null);
  64.       super.add(this.panel = new Panel());
  65.       this.sizepanel(true);
  66.    }
  67.  
  68.    public void addNotify() {
  69.       super.addNotify();
  70.       this.sizepanel(true);
  71.    }
  72.  
  73.    public void setPaddingTop(int var1) {
  74.       this.padtop = var1;
  75.       this.sizepanel(true);
  76.       ((Component)this).invalidate();
  77.    }
  78.  
  79.    public int getPaddingTop() {
  80.       return this.padtop;
  81.    }
  82.  
  83.    public void setPaddingBottom(int var1) {
  84.       this.padbottom = var1;
  85.       this.sizepanel(true);
  86.       ((Component)this).invalidate();
  87.    }
  88.  
  89.    public int getPaddingBottom() {
  90.       return this.padbottom;
  91.    }
  92.  
  93.    public void setPaddingLeft(int var1) {
  94.       this.padleft = var1;
  95.       this.sizepanel(true);
  96.       ((Component)this).invalidate();
  97.    }
  98.  
  99.    public int getPaddingLeft() {
  100.       return this.padleft;
  101.    }
  102.  
  103.    public void setPaddingRight(int var1) {
  104.       this.padright = var1;
  105.       this.sizepanel(true);
  106.       ((Component)this).invalidate();
  107.    }
  108.  
  109.    public int getPaddingRight() {
  110.       return this.padright;
  111.    }
  112.  
  113.    public void setIPadTop(int var1) {
  114.       this.iyPadTop = var1;
  115.       this.sizepanel(true);
  116.       ((Component)this).invalidate();
  117.    }
  118.  
  119.    public void setIPadBottom(int var1) {
  120.       this.iyPadBottom = var1;
  121.       this.sizepanel(true);
  122.       ((Component)this).invalidate();
  123.    }
  124.  
  125.    public int getIPadTop() {
  126.       return this.iyPadTop;
  127.    }
  128.  
  129.    public void setIPadSides(int var1) {
  130.       this.ixPad = var1;
  131.       this.sizepanel(true);
  132.       ((Component)this).invalidate();
  133.    }
  134.  
  135.    public int getIPadBottom() {
  136.       return this.iyPadBottom;
  137.    }
  138.  
  139.    public void setPadding(int var1, int var2, int var3, int var4) {
  140.       this.padtop = var1;
  141.       this.padbottom = var2;
  142.       this.padleft = var3;
  143.       this.padright = var4;
  144.       this.sizepanel(true);
  145.       ((Component)this).invalidate();
  146.    }
  147.  
  148.    public int getIPadSides() {
  149.       return this.ixPad;
  150.    }
  151.  
  152.    public void setLabel(String var1) {
  153.       this.label = var1 != null && var1.length() == 0 ? null : var1;
  154.       this.sizepanel(true);
  155.       ((Component)this).invalidate();
  156.    }
  157.  
  158.    public String getLabel() {
  159.       return this.label;
  160.    }
  161.  
  162.    public void setBorderColor(Color var1, boolean var2) {
  163.       this.borderColor = var1;
  164.       if (var2) {
  165.          this.labelColor = var1;
  166.       }
  167.  
  168.       ((Component)this).invalidate();
  169.    }
  170.  
  171.    public void setBorderColor(Color var1) {
  172.       this.setBorderColor(var1, false);
  173.    }
  174.  
  175.    public Color getBorderColor() {
  176.       return this.borderColor;
  177.    }
  178.  
  179.    public void setAlignStyle(int var1) {
  180.       this.labelAlignment = var1;
  181.       this.sizepanel(true);
  182.       ((Component)this).invalidate();
  183.    }
  184.  
  185.    public int getAlignStyle() {
  186.       return this.labelAlignment;
  187.    }
  188.  
  189.    public void setLabelColor(Color var1) {
  190.       this.labelColor = var1;
  191.       ((Component)this).invalidate();
  192.    }
  193.  
  194.    public Color getLabelColor() {
  195.       return this.labelColor;
  196.    }
  197.  
  198.    public void setBevelStyle(int var1) {
  199.       this.style = var1;
  200.       ((Component)this).invalidate();
  201.    }
  202.  
  203.    public int getBevelStyle() {
  204.       return this.style;
  205.    }
  206.  
  207.    public void setInternalInsets(Insets var1) {
  208.       this.internalInsets = var1;
  209.       this.sizepanel(true);
  210.       ((Component)this).invalidate();
  211.    }
  212.  
  213.    public Insets getInternalInsets() {
  214.       return this.internalInsets;
  215.    }
  216.  
  217.    public void layout() {
  218.       this.sizepanel(false);
  219.       this.panel.layout();
  220.    }
  221.  
  222.    public Dimension minimumSize() {
  223.       return this.preferredSize();
  224.    }
  225.  
  226.    public Dimension preferredSize() {
  227.       Dimension var1 = this.panel.preferredSize();
  228.       var1.width = Math.max(var1.width, this.getLabelWidthMargin());
  229.       var1.width += this.padleft + this.padright + this.ixPad * 2 + 1;
  230.       var1.height += this.getLabelTopMargin() + this.padbottom + this.iyPadTop + this.iyPadBottom + 1;
  231.       return var1;
  232.    }
  233.  
  234.    public void setLayout(LayoutManager var1) {
  235.       if (this.panel != null) {
  236.          this.panel.setLayout(var1);
  237.       }
  238.  
  239.    }
  240.  
  241.    public LayoutManager getLayout() {
  242.       return this.panel.getLayout();
  243.    }
  244.  
  245.    public Component add(Component var1) {
  246.       return this.panel.add(var1);
  247.    }
  248.  
  249.    public Component add(String var1, Component var2) {
  250.       return this.panel.add(var1, var2);
  251.    }
  252.  
  253.    public Component add(Component var1, int var2) {
  254.       return var1 == this.panel ? super.add(var1, var2) : this.panel.add(var1, var2);
  255.    }
  256.  
  257.    public void remove(Component var1) {
  258.       this.panel.remove(var1);
  259.    }
  260.  
  261.    public void removeAll() {
  262.       this.panel.removeAll();
  263.    }
  264.  
  265.    public void reshape(int var1, int var2, int var3, int var4) {
  266.       super.reshape(var1, var2, var3, var4);
  267.       this.sizepanel(false);
  268.    }
  269.  
  270.    public void update(Graphics var1) {
  271.       Dimension var2 = ((Component)this).size();
  272.       Insets var3 = this.insets();
  273.       var1.setColor(((Component)this).getBackground());
  274.       if (var3.left > 0) {
  275.          var1.fillRect(0, 0, var3.left, var2.height);
  276.       }
  277.  
  278.       if (var3.top > 0) {
  279.          var1.fillRect(0, 0, var2.width, var3.top);
  280.       }
  281.  
  282.       if (var3.bottom > 0) {
  283.          var1.fillRect(0, var2.height - var3.bottom, var2.width, var3.bottom);
  284.       }
  285.  
  286.       if (var3.right > 0) {
  287.          var1.fillRect(var2.width - var3.right, 0, var3.right, var2.height);
  288.       }
  289.  
  290.       this.paint(var1);
  291.       this.panel.repaint();
  292.    }
  293.  
  294.    public int countComponents() {
  295.       return this.panel.countComponents();
  296.    }
  297.  
  298.    public Component getComponent(int var1) {
  299.       return this.panel.getComponent(var1);
  300.    }
  301.  
  302.    public Component[] getComponents() {
  303.       return this.panel.getComponents();
  304.    }
  305.  
  306.    public Insets insets() {
  307.       int var1 = this.getLabelTopMargin();
  308.       Insets var2 = this.getInternalInsets();
  309.       return new Insets(var1 + var2.top, var2.left, var2.bottom, var2.right);
  310.    }
  311.  
  312.    void sizepanel(boolean var1) {
  313.       Dimension var2 = ((Component)this).size();
  314.       if (var1 || this.oldSize.width != var2.width || this.oldSize.height != var2.height) {
  315.          this.oldSize = ((Component)this).size();
  316.          this.panel.reshape(this.padleft + this.ixPad, this.getLabelTopMargin() + this.iyPadTop, this.oldSize.width - this.padright - this.padleft - this.ixPad * 2 - 1, this.oldSize.height - this.padbottom - this.getLabelTopMargin() - this.iyPadBottom - this.iyPadTop - 1);
  317.       }
  318.  
  319.    }
  320.  
  321.    public void paint(Graphics var1) {
  322.       this.sizepanel(false);
  323.       var1.setColor(((Component)this).getBackground());
  324.       this.draw(var1);
  325.    }
  326.  
  327.    void draw(Graphics var1) {
  328.       Dimension var2 = ((Component)this).size();
  329.       int var3 = this.padtop;
  330.       FontMetrics var4 = ((Component)this).getFontMetrics(((Component)this).getFont());
  331.       var1.clipRect(0, 0, var2.width, var2.height);
  332.       if (this.label != null && var4 != null) {
  333.          var3 = (var4.getAscent() + var4.getDescent() + this.padtop) / 2;
  334.       }
  335.  
  336.       int var5 = this.padleft;
  337.       int var7 = var2.width - this.padleft - this.padright - 1;
  338.       int var8 = var2.height - 1 - var3 - this.padbottom;
  339.       this.drawBorder(var1, var5, var3, var7, var8);
  340.       this.drawLabel(var1, var4);
  341.    }
  342.  
  343.    void drawBorder(Graphics var1, int var2, int var3, int var4, int var5) {
  344.       switch (this.style) {
  345.          case 0:
  346.             var1.setColor(Color.gray);
  347.             var1.drawLine(var2, var3, var2 + var4, var3);
  348.             var1.drawLine(var2, var3, var2, var3 + var5);
  349.             var1.setColor(Color.white);
  350.             var1.drawLine(var2, var3 + var5, var2 + var4, var3 + var5);
  351.             var1.drawLine(var2 + var4, var3, var2 + var4, var3 + var5);
  352.             return;
  353.          case 1:
  354.             var1.setColor(Color.white);
  355.             var1.drawLine(var2, var3, var2 + var4, var3);
  356.             var1.drawLine(var2, var3, var2, var3 + var5);
  357.             var1.setColor(Color.gray);
  358.             var1.drawLine(var2, var3 + var5, var2 + var4, var3 + var5);
  359.             var1.drawLine(var2 + var4, var3, var2 + var4, var3 + var5);
  360.             return;
  361.          case 2:
  362.             var1.setColor(this.borderColor);
  363.             var1.drawRect(var2, var3, var4, var5);
  364.             return;
  365.          default:
  366.             var1.setColor(this.borderColor);
  367.             var1.drawRect(var2, var3, var4, var5);
  368.          case 3:
  369.       }
  370.    }
  371.  
  372.    void drawLabel(Graphics var1, FontMetrics var2) {
  373.       if (this.label != null && var2 != null) {
  374.          int var3 = 10;
  375.          Dimension var4 = ((Component)this).size();
  376.          if (((Component)this).getFont().getSize() > var3) {
  377.             var3 += ((Component)this).getFont().getSize() / 2;
  378.          }
  379.  
  380.          int var5 = var2.stringWidth(this.label);
  381.          int var6 = var2.getAscent();
  382.          int var7 = var2.getDescent();
  383.          int var8;
  384.          switch (this.labelAlignment) {
  385.             case 0:
  386.             default:
  387.                var8 = var3 + 7;
  388.                break;
  389.             case 1:
  390.                var8 = (var4.width - var5) / 2;
  391.                break;
  392.             case 2:
  393.                var8 = var4.width - var3 - (var5 + 7);
  394.          }
  395.  
  396.          int var10 = var6 + var7 + this.padtop;
  397.          int var9 = (var3 - var10) / 2 + this.padtop + var6;
  398.          var1.setColor(((Component)this).getBackground());
  399.          var1.fillRect(var8 - 2, var9 - 1 - var6 - this.padtop / 2, var5 + 4, var10);
  400.          var1.setColor(this.labelColor);
  401.          var1.drawString(this.label, var8, var9 - 1);
  402.       }
  403.  
  404.    }
  405.  
  406.    protected int getLabelTopMargin() {
  407.       if (this.label == null) {
  408.          return this.padtop;
  409.       } else {
  410.          int var1 = this.padtop;
  411.          Font var2 = ((Component)this).getFont();
  412.          if (var2 != null) {
  413.             FontMetrics var3 = ((Component)this).getFontMetrics(var2);
  414.             var1 = var3.getAscent() + var3.getDescent() + this.padtop;
  415.          }
  416.  
  417.          return var1;
  418.       }
  419.    }
  420.  
  421.    int getLabelWidthMargin() {
  422.       if (this.label == null) {
  423.          return 0;
  424.       } else {
  425.          int var1 = 2 + this.internalInsets.left + this.internalInsets.right;
  426.          Font var2 = ((Component)this).getFont();
  427.          if (var2 != null) {
  428.             FontMetrics var3 = ((Component)this).getFontMetrics(var2);
  429.             var1 = Math.max(var1, 2 + var3.stringWidth(this.label) + 10 + 4);
  430.          }
  431.  
  432.          return var1;
  433.       }
  434.    }
  435.  
  436.    public void setBackground(Color var1) {
  437.       super.setBackground(var1);
  438.       this.panel.setBackground(var1);
  439.    }
  440. }
  441.